package ipdesk.model.report.promote.action;


import java.util.List;
import java.util.Map;

import ipdesk.model.report.consult.dao.ConsultInfoDao;
import ipdesk.model.report.promote.bean.PromoteInfoBean;
import ipdesk.model.report.promote.dao.PromoteInfoDao;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;

import ecg.util.PageUtil;

public class PromoteInfoSelectAction extends ActionSupport implements Preparable, ModelDriven<PromoteInfoBean>
{
	// 모델 드리븐에 사용되는 도메인 객체.
	private PromoteInfoBean promoteInfoBean;
	
	// 상세보기 뷰페이지에서 사용되는 도메인 객체
	private PromoteInfoBean promoteInfoDetail;
	
	// 페이지 정보를 저장하는 맵 객체
	private Map pageInfoDataMap;
	
	// 목록페이지에서 사용되는 도메인 객체
	private List<PromoteInfoBean> promoteList;
	
	/**
	 * 목록 정보 조회.
	 */
	@Override
	public String execute() throws Exception
	{
		// 전체 데이터 갯수를 가져온다.
		int totalCount = PromoteInfoDao.getInstance().getDataTotalCount(promoteInfoBean);
		
		// 페이지 정보 저장.
		pageInfoDataMap = PageUtil.getInstance().getPageInfoData(totalCount, promoteInfoBean.getPageNumber());
		
		pageInfoDataMap.put("totalCount", totalCount);
		
		// 쿼리에서 사용될 deskCode를 맵에 저장. 관리자일 경우에만 저장함.
		if(promoteInfoBean.getDeskCode() != null)
		{
			pageInfoDataMap.put("deskCode", promoteInfoBean.getDeskCode());
		}
		
		// 기업정보를 가지고 온다.
		promoteList = PromoteInfoDao.getInstance().getPagingDataList(pageInfoDataMap);
		
		return SUCCESS;
	}
	
	/**
	 * 상세보기 데이터 가져오기
	 * @return
	 * @throws Exception
	 */
	public String executeDetail() throws Exception
	{
		/**
		 * 1. 목록에서 넘어온 promoteSeq를 조건으로 해당 데이터를 DB에서 가지고 온다.
		 * 2. 해당 사용자, 해당 지역코드는 Dao쪽에서 세션에 담긴 데이터를 가지고 온다.
		 */
		
		int promoteSeq = promoteInfoBean.getPromoteSeq();
		
		promoteInfoDetail = PromoteInfoDao.getInstance().getDetailData(promoteSeq);
		
		return SUCCESS;
	}
	
	
	public List<PromoteInfoBean> getPromoteList()
	{
		return promoteList;
	}

	public PromoteInfoBean getPromoteInfoDetail()
	{
		return promoteInfoDetail;
	}

	public void setPromoteInfoDetail(PromoteInfoBean promoteInfoDetail)
	{
		this.promoteInfoDetail = promoteInfoDetail;
	}

	public Map getPageInfoDataMap()
	{
		return pageInfoDataMap;
	}

	public void setPageInfoDataMap(Map pageInfoDataMap)
	{
		this.pageInfoDataMap = pageInfoDataMap;
	}

	public void setPromoteList(List<PromoteInfoBean> promoteList)
	{
		this.promoteList = promoteList;
	}

	public void prepare() throws Exception
	{
		promoteInfoBean = new PromoteInfoBean();
	}
	
	public PromoteInfoBean getModel()
	{
		return promoteInfoBean;
	}
	
}

